Content and data management has become an integral part of a vast majority of various enterprises and other businesses struggling to keep up with the demands of today's ever changing technology. For example, a typical enterprise utilizes a myriad of databases, file systems, applications and other means to manage its digital content. In a common scenario, various vendors provide their own proprietary version of a content management application that extends a storage layer such as a relational database with service facilities that almost any modern content application requires.
With such growing popularity of content management systems, the need for a common standardized way to access the repositories has become apparent. The current content repository for Java technology specification, developed under the Java Community Process as JSR-170, attempts to provide a standard application programming interface (API) to meet such a need. JSR-170 API defines how an application and a content repository interact with respect to a number of content services. However, even with such standard interfaces various difficulties remain for software developers using these systems.
For example, the typical content management system has an API that the developer must learn in order to perform various tasks within the repository such as creating, editing, updating and removing data. When using the repository directly, a developer must also typically describe and define the data types in a separate configuration file. Code can then be written that is aware of the defined data types and this code is typically stored in a separate location within the system. This presents dual code maintenance difficulties. For example, when the developer wishes to modify or create new data types within the repository, both of these files must typically be edited in order to bring about the appropriate changes.
What is needed is a more direct and user-friendly approach to managing data within the content repository, one that enables developers to easily create new data types as well as modify and access existing content.